package vista;
import com.toedter.calendar.JDateChooser;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.FocusListener;
import java.awt.event.KeyListener;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import javax.swing.border.LineBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;


/**
 * This code was edited or generated using CloudGarden's Jigloo SWT/Swing GUI
 * Builder, which is free for non-commercial use. If Jigloo is being used
 * commercially (ie, by a corporation, company or business for any purpose
 * whatever) then you should purchase a license for each developer using Jigloo.
 * Please visit www.cloudgarden.com for details. Use of Jigloo implies
 * acceptance of these licensing terms. A COMMERCIAL LICENSE HAS NOT BEEN
 * PURCHASED FOR THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED LEGALLY FOR
 * ANY CORPORATE OR COMMERCIAL PURPOSE.
 */
@SuppressWarnings("serial")
public class VentanaFacturaCompra extends javax.swing.JFrame {
	private JPanel jplfactura;
	private JTextField jtxtRifCedula;
	private JButton jbtagregarproducto;
	private JButton jButton1;
	private JLabel lbl;
	private JDateChooser jDateChooser2;
	private JDateChooser jDateChooser1;
	private JLabel lblFechaDeEmision;
	private JTable tblItemProducto;
	private JScrollPane jcpFactura;
	private JButton btnCancelar;
	private JButton btnGuardar;
	private JLabel lblimagen;
	private JPanel jfactura2;
	private JLabel jlbfechavencimiento;
	private JTextField jtxtDireccion;
	private JTextField txtcantidad;
	private JLabel jlbcantidad;
	@SuppressWarnings("rawtypes")
	private JComboBox cmbproductos;
	private JPanel jplproductos;
	private JTextField jtxtNumeroFactura;
	private JLabel jlbNumeroFactura;
	private JTextField jtxtNombre;
	private JLabel jlb;
	private JLabel jlbRif;
	private JLabel jlbNombre;
	private JLabel jlbfacturacompra;

	public VentanaFacturaCompra() {
		super();
		initGUI();
	}

	@SuppressWarnings({ "unchecked", "rawtypes" })
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			{
				jplfactura = new JPanel();
				getContentPane().add(jplfactura, BorderLayout.CENTER);
				jplfactura.setLayout(null);
				jplfactura.setPreferredSize(new java.awt.Dimension(906, 514));
				jplfactura.setLayout(null);
				jplfactura.setBackground(new java.awt.Color(255, 255, 255));
				jplfactura.setEnabled(false);
				{
					jlbfacturacompra = new JLabel();
					jplfactura.add(jlbfacturacompra);
					jlbfacturacompra.setText("Registro de Factura de Compra");
					jlbfacturacompra.setBounds(362, 11, 282, 21);
					jlbfacturacompra.setFont(new java.awt.Font(
							"Bitstream Charter", 0, 20));
				}
				{
					jlbNombre = new JLabel();
					jplfactura.add(jlbNombre);
					jlbNombre.setText("Nombre:");
					jlbNombre.setBounds(452, 114, 61, 15);
				}
				{
					jlbRif = new JLabel();
					jplfactura.add(jlbRif);
					jlbRif.setText("Rif/Cedula:");
					jlbRif.setBounds(186, 114, 85, 15);

				}
				{
					jlb = new JLabel();
					jplfactura.add(jlb);
					jlb.setText("Dirección:");
					jlb.setBounds(663, 114, 82, 15);
				}
				{
					jtxtNombre = new JTextField();
					jplfactura.add(jtxtNombre);
					jtxtNombre.setBounds(519, 111, 105, 22);
	
				}
				{
					jtxtRifCedula = new JTextField();
					jplfactura.add(jtxtRifCedula);
					jtxtRifCedula.setBounds(270, 111, 100, 22);
					jtxtRifCedula.setActionCommand("txt");
				}
				{
					jtxtDireccion = new JTextField();
					jplfactura.add(jtxtDireccion);
					jtxtDireccion.setBounds(763, 111, 84, 22);
				}
				{
					jlbNumeroFactura = new JLabel();
					jplfactura.add(jlbNumeroFactura);
					jlbNumeroFactura.setText("Numero de Factura:");
					jlbNumeroFactura.setBounds(126, 47, 144, 15);
				}
				{
					jtxtNumeroFactura = new JTextField();
					jplfactura.add(jtxtNumeroFactura);
					jtxtNumeroFactura.setBounds(270, 44, 121, 22);
				}
				{
					jplproductos = new JPanel();
					jplfactura.add(jplproductos);
					jplproductos.setLayout(null);
					jplproductos.setBounds(57, 159, 827, 77);
					jplproductos.setLayout(null);
					jplproductos.setBorder(BorderFactory.createMatteBorder(1,
							1, 1, 1, new java.awt.Color(0, 0, 0)));
					jplproductos
							.setBackground(new java.awt.Color(255, 255, 255));
					{
						DefaultComboBoxModel cmbproductosModel = new DefaultComboBoxModel(
								new String[] { });
						cmbproductos = new JComboBox();
						jplproductos.add(cmbproductos);
						cmbproductos.setModel(cmbproductosModel);
						cmbproductos.setBounds(105, 4, 157, 22);
					}
					{
						jlbcantidad = new JLabel();
						jplproductos.add(jlbcantidad);
						jlbcantidad.setText("Cantidad:");
						jlbcantidad.setBounds(274, 8, 83, 15);
					}
					{
						txtcantidad = new JTextField();
						jplproductos.add(txtcantidad);
						txtcantidad.setBounds(363, 5, 57, 22);
					}
					{
						jbtagregarproducto = new JButton();
						jbtagregarproducto.setLayout(null);
						jplproductos.add(jbtagregarproducto);
						jbtagregarproducto.setBounds(562, 41, 87, 31);
						jbtagregarproducto.setBackground(new java.awt.Color(
								255, 255, 255));
						jbtagregarproducto.setBorder(BorderFactory
								.createEmptyBorder(0, 0, 0, 0));
						jbtagregarproducto.setActionCommand("Agregar");
						jbtagregarproducto.setIcon(new ImageIcon(getClass().getClassLoader().getResource("imagen/AgregarProducto2.jpg")));
						jbtagregarproducto.setRolloverIcon(new ImageIcon(getClass().getClassLoader().getResource("imagen/AgregarProducto.jpg")));
					}
					{
						jlbfechavencimiento = new JLabel();
						jplproductos.add(jlbfechavencimiento);
						jplproductos.add(getJDateChooser2());
						jplproductos.add(getBtnCancelar());
						jplproductos.add(getLbl());
						jlbfechavencimiento.setText("Fecha Vencimiento:");
						jlbfechavencimiento.setBounds(432, 8, 142, 15);
					}
				}
				{
					jfactura2 = new JPanel();
					jplfactura.add(jfactura2);
					jfactura2.setLayout(null);
					jfactura2.setBounds(56, 248, 828, 198);
					jfactura2.setLayout(null);
					jfactura2.setBorder(new LineBorder(new java.awt.Color(0, 0,
							0), 1, false));
					jfactura2.setBackground(new java.awt.Color(255, 255, 255));
					jfactura2.setForeground(new java.awt.Color(255, 255, 255));
					{
						jcpFactura = new JScrollPane();
						jfactura2.add(jcpFactura);
						jcpFactura.setBounds(1, 5, 826, 192);
						{
						
							TableModel tblItemProductoModel = new DefaultTableModel(
									new String[][] {}, new String[] {
											"Producto", "Cantidad",
											"Fecha de vencimiento" }) {
								@Override
								public boolean isCellEditable(int row,
										int column) {
									// TODO Auto-generated method stub
									return false;
								}
							};
							tblItemProducto = new JTable();
							jcpFactura.setViewportView(tblItemProducto);
							tblItemProducto.setModel(tblItemProductoModel);
							tblItemProducto.setSelectionMode(1);

						}
					}
				}
				{
					lblimagen = new JLabel();
					jplfactura.add(lblimagen);
					lblimagen.setBounds(7, 21, 49, 507);
					lblimagen.setIcon(new ImageIcon(getClass().getClassLoader()
							.getResource("imagen/fondo7.jpg")));
				}
				{
					btnGuardar = new JButton();
					jplfactura.add(btnGuardar);
					btnGuardar.setBounds(383, 471, 93, 31);
					btnGuardar.setIcon(new ImageIcon(getClass()
							.getClassLoader().getResource(
									"imagen/Boton_Guardar2.jpg")));
					btnGuardar.setBorder(BorderFactory.createEmptyBorder(0, 0,
							0, 0));
					btnGuardar.setRolloverIcon(new ImageIcon(getClass()
							.getClassLoader().getResource(
									"imagen/Boton_Guardar.jpg")));
					btnGuardar.setForeground(new java.awt.Color(26, 26, 26));
					btnGuardar.setBackground(new java.awt.Color(255, 255, 255));
					btnGuardar.setActionCommand("Guardar");
				}
				{
					lblFechaDeEmision = new JLabel();
					jplfactura.add(lblFechaDeEmision);
					lblFechaDeEmision.setText("Fecha de emisón:");
					lblFechaDeEmision.setBounds(126, 81, 137, 15);
				}
				{
					jDateChooser1 = new JDateChooser();
					jplfactura.add(jDateChooser1);
					jplfactura.add(getJButton1());
					jDateChooser1.setBounds(275, 78, 116, 22);
				}

			}
			pack();
			this.setSize(916, 544);
		} catch (Exception e) {
			// add your error handling code here
			e.printStackTrace();
		}
	}

	// se obtiene la combo box de productos.
	@SuppressWarnings("rawtypes")
	public JComboBox getCmbproductos() {
		return cmbproductos;
	}

	// se asigna el combo del proyecto.
	@SuppressWarnings("rawtypes")
	public void setCmbproductos(JComboBox cmbproductos) {
		this.cmbproductos = cmbproductos;
	}

	// prepara los botones para luego se usados.
	public void agregarListener(ActionListener actionListener) {
		btnGuardar.addActionListener(actionListener);
		jbtagregarproducto.addActionListener(actionListener);
		btnCancelar.addActionListener(actionListener);
		jtxtRifCedula.addActionListener(actionListener);
		jButton1.addActionListener(actionListener);
		

	}

	// prepara los metodos que pueden ser usados en una caja de texto...
	// en este caso el de rif cedula.
	public void agregarKeyListener(KeyListener keylistener) {
		jtxtRifCedula.addKeyListener(keylistener);
		txtcantidad.addKeyListener(keylistener);
	}

	// retorna la cedula que se encuentra en dicha caja de texto.
	public String getJtxtRifCedula() {
		return jtxtRifCedula.getText();
	}

	// retorna la tabla de los productos.
	public JTable getTblItemProducto() {
		return tblItemProducto;
	}

	// retorna la direccion que se encuentra en dicha caja de texto.
	public String getJtxtDireccion() {
		return jtxtDireccion.getText();
	}

	// retorna la cantidad que se encuentra en dicha caja de texto.
	public String getTxtcantidad() {
		return txtcantidad.getText();
	}

	// retorna el numero de factura que se encuentra en dicha caja de texto.
	public String getJtxtNumeroFactura() {
		return jtxtNumeroFactura.getText();
	}

	// retorna el nombre que se encuentra en dicha caja de texto.
	public String getJtxtNombre() {
		return jtxtNombre.getText();
	}

	public void setJtxtRifCedula(String texto) {
		this.jtxtRifCedula.setText(texto);
	}

	public void setTblItemProducto(JTable tblItemProducto) {
	}

	public void setJtxtDireccion(String texto) {
		this.jtxtDireccion.setText(texto);
	}

	public void setTxtcantidad(String texto) {
		this.txtcantidad.setText(texto);
	}

	public void setJtxtNumeroFactura(String texto) {
		this.jtxtNumeroFactura.setText(texto);
	}

	public void setJtxtNombre(String texto) {
		this.jtxtNombre.setText(texto);
	}

	// agrega una dato alfanumerico al combo de productos.
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public void agregarItemcmbproductos(String item) {
		DefaultComboBoxModel modelocombo = (DefaultComboBoxModel) cmbproductos
				.getModel();
		modelocombo.addElement(item);
	}

	// agrega una fila a la tabla de los item compras.
	public void agregarItemProducto(Vector<String> campos) {
		if (getTxtcantidad().equals("") || retornarFechaItemCompra().equals("")) {
			mostrarMensaje("Debe llenar todos los campos");
		} else {
			DefaultTableModel tablaItem = (DefaultTableModel) tblItemProducto
					.getModel();
			tablaItem.addRow(campos);
		}
	}
	
	public void agregarItemProductoA(Vector<String> campos){
		DefaultTableModel tablaItem = (DefaultTableModel) tblItemProducto
				.getModel();
		tablaItem.addRow(campos);
	}

	// retorna el item seleccionado en el combo de productos.
	public String getSelectedItemCbo() {
		@SuppressWarnings("rawtypes")
		DefaultComboBoxModel modelo = (DefaultComboBoxModel) cmbproductos
				.getModel();

		return (String) modelo.getSelectedItem();
	}

	// retorna la cantidad de colunnas en la tabla.
	public int CantidadColunnas() {
		return tblItemProducto.getColumnCount();
	}

	// retorna la cantidad de filas en la tabla.
	public int Cantidadfilas() {
		return tblItemProducto.getRowCount();
	}

	// limpia los campos.
	public void limpiarCampos() {
		setTxtcantidad("");
		jDateChooser2.setDate(null);
		

	}
public void verificarCampoFecha(Date fecha){
	jDateChooser2.setDate(fecha);
}

public void validarFecha(){
	JDateChooser datachoose = new JDateChooser() ;
	datachoose = jDateChooser1;
	String fecha = "01/01/1950";
	Date fechaIngresar = DeStringADate(fecha);
	Date fechaSistema = new Date();

	datachoose.setSelectableDateRange(fechaIngresar, fechaSistema);
}



	// retorna una fila selecciona en una tabla recibiendo por parametro un
	// entero.
	public Vector<String> retornarItemCompra(int index) {
		DefaultTableModel modelo = (DefaultTableModel) tblItemProducto
				.getModel();
		Vector<String> datos = new Vector<String>(3, 1);
		String codigo = (String) modelo.getValueAt(index, 0);
		String cantidad = (String) modelo.getValueAt(index, 1);
		String fechavencimiento = (String) modelo.getValueAt(index, 2);
		datos.add(codigo);
		datos.add(cantidad);
		datos.add(fechavencimiento);
		return datos;
	}

	// elemina una fila seleccionada.
	public void eliminarFilaTblItemCompra(int index) {
		DefaultTableModel modelo = (DefaultTableModel) this.tblItemProducto
				.getModel();

		modelo.removeRow(index);
	}

	// retorna el numero de la fila que ha sido seleccionada.
	public int retornarFilaSelecionada() {

		return tblItemProducto.getSelectedRow();
	}

	// muestra mensajes del tipo de información.
	public void mostrarMensaje(String mensaje) {
		JOptionPane.showMessageDialog(this, mensaje, "Información",
				JOptionPane.INFORMATION_MESSAGE);
	}

	public int mostrarMensajeSiNO(String mensaje) {
		int seleccion = JOptionPane.showOptionDialog(this, mensaje,
				"Seleccione una opción", JOptionPane.YES_NO_CANCEL_OPTION,
				JOptionPane.QUESTION_MESSAGE, null,
				new Object[] { "Si", "No" }, "Si");
		return seleccion;
	}

	public void mostrarSeguridad(String mensaje) {
		JOptionPane.showMessageDialog(this, mensaje, "Interrogación",
				JOptionPane.YES_NO_CANCEL_OPTION);
	}

	public void asignarKeyListener(KeyListener darclick) {
		jtxtRifCedula.addKeyListener(darclick);
	}

	public void asignarFocusListener(FocusListener focuslistener) {
		jtxtRifCedula.addFocusListener(focuslistener);
		jDateChooser2.addFocusListener(focuslistener);
	}

	public void dejarFocusEnTxt() {
		jtxtRifCedula.requestFocus();
	}

	// llena los datos que se encuentran en la ventana.
	public void llenarCamposProveedor(String nombre, String direccion) {
		jtxtNombre.setEditable(false);
		jtxtDireccion.setEditable(false);

		setJtxtNombre(nombre);
		setJtxtDireccion(direccion);
	}

	// retorna la cantidad de item que se encuentran en un combo.
	public int cantidadItemCombo() {
		int willi = cmbproductos.getItemCount();
		return willi;
	}

	// convierte un dato alfanumerico en un dato date.
	public Date  DeStringADate(String fecha) {
		SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
		Date fechaDate = null;
		try {
			fechaDate = formato.parse(fecha);
			return fechaDate;
		} catch (ParseException ex) {
			ex.printStackTrace();
			return fechaDate;
		}
	}

	public Date retornarDate() {
		JDateChooser datachoose = new JDateChooser() ;
		datachoose = jDateChooser1;
		Date fechaDate = datachoose.getDate();
		return fechaDate;
	}
public String retornarFechaEmision(){
	String fecha = jDateChooser1.getDateFormatString();
	return fecha;
}
	private JDateChooser getJDateChooser2() {
		if (jDateChooser2 == null) {
			jDateChooser2 = new JDateChooser();
			jDateChooser2.setBounds(568, 8, 125, 22);
		}
		return jDateChooser2;
	}
	public Date retornarFechaItemCompra(){
		Date fecha = jDateChooser2.getDate();
	return fecha;
	}
    public Date retornarFechaItemCompra2(){
    	Date fecha = new Date();
     fecha = jDateChooser2.getDate();
    	return fecha;
    }
    
    private JButton getBtnCancelar() {
    	if(btnCancelar == null) {
    		btnCancelar = new JButton();
    		btnCancelar.setBounds(700, 40, 85, 32);
    		btnCancelar.setIcon(new ImageIcon(getClass().getClassLoader().getResource("imagen/Boton_Cancelar2.jpg")));
    		btnCancelar.setRolloverIcon(new ImageIcon(getClass().getClassLoader().getResource("imagen/Boton_Cancelar.jpg")));
    		btnCancelar.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
    		btnCancelar.setActionCommand("Cancelar");
    	}
    	return btnCancelar;
    }
    
    private JLabel getLbl() {
    	if(lbl == null) {
    		lbl = new JLabel();
    		lbl.setText("Productos.");
    		lbl.setBounds(8, 8, 85, 15);
    	}
    	return lbl;
    }
    public void validarFechaVencimiento(){
    	JDateChooser datachoose = new JDateChooser() ;
    	datachoose = jDateChooser2;
    	JDateChooser datachoosee = new JDateChooser();
    	datachoosee = jDateChooser1;
    	Date fechaemision = datachoosee.getDate();
    	String fecha = "01/01/3000";
    	Date fechaIngresar = DeStringADate(fecha);
    	datachoose.setSelectableDateRange(fechaemision, fechaIngresar);
    }
    public void ponerEneableComponentesDeFacturaCompra(){
    	txtcantidad.setEditable(false);
    	jtxtDireccion.setEditable(false);
    	jtxtNombre.setEditable(false);
    	jtxtNumeroFactura.setEditable(false);
    	jtxtRifCedula.setEditable(false);
    	jDateChooser1.setEnabled(false);
    	jDateChooser2.setEnabled(false);
    	btnGuardar.setVisible(false);
    	
    }

	public Date getjDateChooser2() {
		return jDateChooser2.getDate();
	}

	public Date getjDateChooser1() {
		return jDateChooser1.getDate();
	}

	public void setjDateChooser2(Date fecha) {
		this.jDateChooser2.setDate(fecha);
	}

	public void setjDateChooser1(Date fecha) {
		this.jDateChooser1.setDate(fecha);
	}
	
	private JButton getJButton1() {
		if(jButton1 == null) {
			jButton1 = new JButton();
			jButton1.setBounds(387, 473, 90, 27);
			jButton1.setIcon(new ImageIcon(getClass().getClassLoader().getResource("imagen/Boton_Salir2.jpg")));
			jButton1.setRolloverIcon(new ImageIcon(getClass().getClassLoader().getResource("imagen/Boton_Salir.jpg")));
			jButton1.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
			jButton1.setActionCommand("Salir");
		}
		return jButton1;
	}
public String getTextIdCliente(){
	return jtxtRifCedula.getText();
}
public String getTextCantidad(){
	return txtcantidad.getText();
}
}